Some systems that provide services to customers (including access to computing resources or storage services) provide “instances” of the computing or storage resources required to satisfy various service requests through resource pools. Different resource pools may include instances of different types of resources and/or resources having different capabilities and/or performance specifications. For example, these systems may manage a pool of database connections, CPU cycles, heap memory, or throughput capacity (e.g., in terms of input/output operations). Such systems typically allow customers to submit a resource request or a request to perform an operation that requires the use of a particular amount of a pooled resource. If the requested amount of the pooled resource is available, the system accepts and services the request (i.e., the requested operation is performed). Otherwise, the request is rejected.
In some systems, if it is not possible to satisfy multiple resource requests that are received within a given time period from one or more customers, at least some of the requests are rejected. In other words, when the demand for resources exceeds the supply, incoming requests are throttled. In some cases, the system returns an error message to the customers indicating that their requests exceed the capacity of the resource pool and that they need to reduce the rate at which they submit requests in the future.
In some systems, customers are able to reserve a portion of a resource pool for their exclusive use. In return for this exclusive access, the customers are typically charged for the total amount of reserved resources (i.e., their reserved capacity) on a flat-fee basis for a given period of time (i.e., regardless of the amount of the reserved capacity that is actually being used by the customer at any given point during that period time). In other systems, customers are charged only for the resources they actually consume, but there are no guarantees that pooled resources will be available when customers need them.
While the technology described herein is susceptible to various modifications and alternative forms, specific embodiments thereof are shown by way of example in the drawings and will herein be described in detail. It should be understood, however, that the drawings and detailed description thereto are not intended to limit the disclosure to the particular form disclosed, but on the contrary, the intention is to cover all modifications, equivalents and alternatives falling within the spirit and scope of the present disclosure as defined by the appended claims.